/* 
	1.该文件主要用于创建Count的容器组件；
	2.容器组件不是程序员亲手创建的，是靠方法生成的；
*/

//引入connect方法，用于：创建一个容器组件，同时连接UI组件与redux
import {connect} from 'react-redux'
//引入UI组件(左手)
import CountUI from '../components/Count'
//引入对应的actionCreator
import {
	createIncrementAction,
	createDecrementAction,
	createWaitIncrementAction,
	createServerIncrementAction
} from '../redux/count_action'

/* 
	关于mapStateToProps函数：
			1.返回值必须是一个对象；
			2.返回的这个对象的key，就作为传给UI组件props的key
			  返回的这个对象的value，就作为传给UI组件props的value
			3.mapStateToProps专门用于给UI传递用于展示的数据(数据来自于redux中)
*/
function mapStateToProps(state){
	return {sum:state}
}

/* 
	关于mapDispatchToProps函数：
			1.返回值必须是一个对象；
			2.返回的这个对象的key，就作为传给UI组件props的key
			  返回的这个对象的value，就作为传给UI组件props的value
			3.mapDispatchToProps函数专门用于给UI传递用于操作redux数据的方法
*/
function mapDispatchToProps(dispatch){
	return {
		jia: (number)=>dispatch(createIncrementAction(number)),
		jian: (number)=>dispatch(createDecrementAction(number)),
		dydJia: (number)=>dispatch(createWaitIncrementAction(number)),
		serverJia: ()=>dispatch(createServerIncrementAction()),
	}
}

//创建一个容器组件
const countContainer = connect(mapStateToProps,mapDispatchToProps)(CountUI)

//暴露容器组件
export default countContainer